# keepalived 主配置文件模板（动态适配 master01/02/03）
! Configuration File for keepalived
global_defs {
    # router_id = 集群名称（K8sClusterName）
    router_id {{.K8sClusterName}}
}

# 健康检查脚本（复用原有 chk_k8s 逻辑，若需保留可添加）
vrrp_script chk_k8s {
    script  "ss -tuln | grep -q ':6443.*LISTEN' && curl -ks --connect-timeout 3 https://127.0.0.1:6443 > /dev/null"
    #script  "/etc/keepalived/if.sh"
    interval 3
    weight -50
}

# VRRP 实例：根据当前节点IP动态设置 interface 和 priority
vrrp_instance VI_1 {
    # 初始状态：master01 为 MASTER，其他为 BACKUP
    state {{if eq .CurrentNodeIp .K8sMaster01}}MASTER{{else}}BACKUP{{end}}
    # interface：按节点角色动态赋值
    interface {{if eq .CurrentNodeIp .K8sMaster01}}
        {{.NetworkName}}  # master01 使用 ClusterMasterNics[0]
    {{else if eq .CurrentNodeIp .K8sMaster02}}
        {{.K8sMaster02Nic}}  # master02 使用 ClusterNodeNics[0]
    {{else if eq .CurrentNodeIp .K8sMaster03}}
        {{.K8sMaster03Nic}}  # master03 使用 ClusterNodeNics[1]
    {{end}}
    virtual_router_id 151  # 同一集群固定，与之前保持一致
    # priority：按节点角色赋值（master01=90, master02=80, master03=70）
    priority {{if eq .CurrentNodeIp .K8sMaster01}}90{{else if eq .CurrentNodeIp .K8sMaster02}}80{{else if eq .CurrentNodeIp .K8sMaster03}}70{{else}}70{{end}}
    advert_int 5  # 心跳间隔，与之前保持一致
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    # virtual_ipaddress = PhysicalHaIp（即 K8sVip）
    virtual_ipaddress {
        {{.K8sVip}}
    }
    # 关联健康检查脚本（若需保留可添加）
    track_script {
        chk_k8s
    }
}